Skip to content

fix(notifications): 自审 A 组——「查看」走挂起定位、对话框上 / 没铃铛时不开历史、折叠去重露出、清空连带折叠卡、读屏与铃铛语义、系统提示音、历史时间刷新 - #293

Merged
KerroKapple merged 2 commits into
mainfrom
fix/redesign-audit
Oct 14, 2026

Conversation

@KerroKapple

Copy link
Copy Markdown
Owner

背景

画布重设计这一轮(#280–#292)合完后,我派了三路只读审查代理对改动做了一次自审。这个 PR 修的是 A 组:通知、提示音、主题层,审查结果是 2 条中危、8 条低危。每条都按当前代码复核过,只有一条低危不修。

修了什么

中危

  1. 通知卡「查看」跨画布时选中丢失。 它在切画布的同一刻直接写目标画布的选中。目标画布还没挂载时,这个 provider 没有订阅者,写进去的值在帧末就被回收了。fix(canvas): 跨画布「在画布中定位」不再丢选中——挂起定位请求,目标画布挂上来后再单选 + 居中 #289 修过同类问题,但漏了这个入口。现在改走挂起定位请求 canvasFocusRequestProvider。原来那条测试先人为订阅保活、再同步读值,所以一直是绿的,什么都没守住。现在改成断言请求本身。
  2. 对话框开着时点「还有 N 条 · 查看全部」。 历史面板挂在根 Overlay 里铃铛那层路由的后面,结果被画到对话框遮罩底下,还会抢走对话框的焦点。另一个场景是启动失败页:页面上没有铃铛,历史一旦打开就关不掉,卡片栈一直藏着,计时一直停着。现在新增 historyHostReady,由铃铛按「自己所在的路由是否在最上层」上报。承接不了时,胶囊不可点;已经开着的历史会立即关掉。

低危

  • 被折叠的卡收到去重替换(新内容)时,挪到最新位置露出来。正在显示的卡仍然原地替换,不跳位。
  • 清空历史时,连同折叠在「还有 N 条」里的卡一起清掉。折叠着的进度卡(连同它在历史里的那一行)照常保留,因为任务还在跑。
  • 失败卡被原地换成一条新的失败时,读屏会再播报一次。原来只在「变成失败」那一刻播报。
  • 铃铛的语义标签加上「有未读 / 有未读的失败」。红点只靠颜色区分,读屏读不到。
  • Windows 系统提示音加上 SND_SYSTEM,归到「系统声音」音量会话,音量合成器里调系统声音对它生效。
  • 历史面板开着时,每 30 秒刷新一次相对时间。
  • docs:补上 notification_sound 目录和 ffi 依赖,修正 job_notification_listener 的描述。

不修:音频播放器里那几处宽泛的 catch。仓库里有同样的先例,注释写了理由,现有测试也是按这个行为写的。

验证

  • flutter analyze lib test:无问题。
  • flutter test --exclude-tags golden:3293 通过,0 失败。
  • 变异实测 9 条全部变红:
    • 「查看」不发请求
    • 胶囊没有承接方也能点开历史
    • 失去承接时不关历史
    • 铃铛不判断路由
    • 折叠的卡去重后不露出
    • 清空时不清折叠卡
    • 内容变了不重新播报
    • 语义标签不带未读
    • 历史面板不刷新
  • SND_SYSTEM 是平台 FFI 调用,没有单测,只改了一个标志位。

自审修复 1 / 4。

🤖 Generated with Claude Code

KerroKapple and others added 2 commits October 15, 2026 04:33
…读屏与铃铛语义、系统提示音归系统音量、历史时间刷新

- 通知卡「查看」改走 canvasFocusRequestProvider:原先切画布同一刻直接写选中,目标画布没挂载时被
  autoDispose 回收(#289 漏掉的入口);那条测试人为订阅保活、同步读值,一直是绿的,改成断言请求。
- ToastCenterState.historyHostReady:铃铛按自己所在路由是否在最上层上报。上面压着对话框时历史面板会
  画在遮罩底下、还抢走对话框焦点;启动失败页没有铃铛,开了历史就关不掉——这两种时候「还有 N 条」
  不可点、开着的历史立即关。
- 去重替换到一张被折叠的卡:挪到最新位置露出来(正在显示的仍原地换)。
- 清空历史连带折叠的卡;折叠着的进度卡与它那一行历史照留。
- 失败卡原地换成新的失败也重新播报;铃铛语义标签带上未读 / 未读失败。
- Windows 系统提示音加 SND_SYSTEM,归到系统声音的音量会话。
- 历史面板开着时每 30 秒刷新相对时间。
- docs:notification_sound 目录、ffi 依赖、job_notification_listener 的描述改准。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@KerroKapple
KerroKapple merged commit dcddafc into main Oct 14, 2026
5 checks passed
@KerroKapple
KerroKapple deleted the fix/redesign-audit branch October 14, 2026 18:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant